package com.orhanobut.logger;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

/**
 * A proxy interface to enable additional operations.
 * Contains all possible Log message usages.
 *
 * @since 2020-11-19
 */
public interface Printer {
    void addAdapter(@NotNull LogAdapter adapter);

    Printer t(@Nullable String tag);

    void d(@NotNull String message, @Nullable Object... args);

    void d(@Nullable Object object);

    void e(@Nullable Object... args);

    void e(@Nullable Throwable throwable, @NotNull String message, @Nullable Object... args);

    void w(@Nullable Object... args);

    void i(@Nullable Object... args);

    void v(@Nullable Object... args);

    void f(@Nullable Object... args);

    void wtf(@Nullable Object... args);

    /**
     * Formats the given json content and print it
     * @param json takes json string
     */
    void json(@Nullable String json);

    /**
     * Formats the given xml content and print it
     * @param xml takes xml string
     */
    void xml(@Nullable String xml);

    void log(int priority, @Nullable String tag, @Nullable String message, @Nullable Throwable throwable);

  void clearLogAdapters();
}
